package org.darcy.service.work;

import java.util.List;

import org.darcy.entity.work.WorkFlowObject;
import org.darcy.entity.work.WorkInstance;
import org.darcy.entity.work.WorkTask;
import org.darcy.framework.generic.GenericService;
import org.darcy.framework.model.PageData;
import org.darcy.framework.model.PageParam;

/**
 * WorkInstance 工作项服务接口
 */
public interface WorkService extends GenericService<WorkInstance> {

	/**
	 * 首页工作任务统计
	 */
	WorkTask getSummary();

	/**
	 * 获取工作项详情
	 * 
	 * @param id 对象id
	 */
	WorkInstance getDetail(Integer id);

	/**
	 * 根据业务参数获取工作流信息
	 * 
	 * @param record   工作流+业务对象
	 * @param formType 业务类型，如：BusinessClient、CheckPlan、CheckReason等
	 */
	void processWorkFlowObject(WorkFlowObject record, String formType);

	/**
	 * 根据业务参数获取工作流信息
	 * 
	 * @param formId   业务对象id
	 * @param formType 业务类型，如：BusinessClient、CheckPlan、CheckReason等
	 */
	WorkFlowObject getWorkFlowObject(Integer formId, String formType);

	/**
	 * 工作项列表(分页)
	 * 
	 * @param param 分页参数
	 */
	PageData<WorkInstance> page(PageParam<WorkInstance> param);

	/**
	 * 根据业务参数获取工作项详情
	 * 
	 * @param formType 业务类型
	 * @param formId   表单id
	 * @param status   审批状态
	 */
	WorkInstance getBusinessWork(WorkInstance param);

	/**
	 * 各个模块通用的工作任务处理，增加审批任务，抄送任务等
	 */
	void addWorkTask(WorkFlowObject record, String title, String summary, String formType);

	/**
	 * 工作任务审批
	 */
	WorkTask approve(WorkTask task);

	/**
	 * 根据分组id获取流程列表
	 * 
	 * @param groupId 分组id
	 */
	List<WorkInstance> getFlowList(Integer groupId);

}
